草庐IT

C++:const char * 到 stringstream

全部标签

c++ - 使用 stringstream 读取浮点值的奇怪失败

我有以下简单代码,它使用c++stringstream读取浮点值(double)。我使用stringstream::good检测读取是否成功。奇怪的是,值被读入float变量,但是good()返回false。底部的代码返回:failed:3.14159我在mingw32下使用gcc4.8.1编译代码,使用g++-std=c++11test.cpp。知道为什么这个读法不是好吗?判断float实际读取成功的正确方法是什么?谢谢#include#includeusingnamespacestd;voidreadFloat(strings){doublei=0!;stringstreamss(

c++ - 为什么 GCC 不允许我创建 `inline static std::stringstream` ?

我会直接去MCVE:#includestructA{inlinestaticstd::stringstreamss;};海湾合作委员会7.2和7.1refusetocompile它有以下错误:error:nomatchingfunctionforcallto'std::__cxx11::basic_stringstream::basic_stringstream()'inlinestaticstd::stringstreamss;^~Infileincludedfromblah:1:0:/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0

c++ - stringstream 读取失败是不确定的吗?

我有一些代码在不同的编译器上表现不同:std::stringstrVal="11";std::stringstreamstream(strVal);autovalue=false;if(!(stream>>std::noboolalpha>>value)){//reporterror-thispathistakenonbothcompilers}//"value"is"false"hereoninVS2017,but"true"onGCC4.6行为上的差异是预期的,还是GCC中的错误?根据cppprefence:Ifextractionfails(e.g.ifaletterwasent

c++ - Stringstream 到 vector<int>

我想知道从std::stringstream中写入的最佳方式是什么进入vector.这是stringstream中内容的示例:"31#0053253803335342337"这是我得到的:intbuffer=0;vectoranalogueReadings;stringstreamoutput;while(output>>buffer)analogueReadings.push_back(buffer);然而,似乎发生的是,它读取第一件事,然后到达#00并返回0因为它不是数字。理想情况下,我想要的是,它达到#然后跳过所有字符直到下一个空格。这可以用标志或其他东西实现吗?谢谢。

c++ - 我可以 std::find stringstream 中的字符串吗?

我有一个字符串流,我想对其进行迭代并确定其中是否存在子字符串。我知道我可以转换为字符串并执行std::string::find(),但我只是希望尽可能避免从字符串流到字符串的转换。我知道以下内容不起作用,因为istream_iterator使用char作为其类型(而非字符串)stringstreamssBody;stringsFindThis;...autoitr=std::find(istreambuf_iterator(ssBody),istreambuf_iterator(),sFindThis);但我能否以某种方式在不转换为字符串的情况下使用std::find或类似的方法在st

c++ - C++用stringstream将string转int并获取消耗的字符数

我是C++新手(具有C#背景),正在尝试学习如何将字符串转换为int。我通过使用stringstream并将其输出到double来让它工作,如下所示:constchar*inputIndex="5+2";doublenumber=0;stringstreamss(inputIndex);ss>>number;//number=5这很好用。我遇到的问题是我正在解析的字符串以数字开头,但可能在数字后有其他非数字字符(例如“5+2”、“9-(3+2)”等)。stringstream在开头解析数字并在遇到非数字时停止,就像我需要的那样。当我想知道有多少字符被解析为数字时,问题就来了。例如,如果

c++ - 为什么我不能按值将右值 std::stringstream 传递给函数?

为什么这段代码不能编译?#includevoidf(std::stringstream){}intmain(){f(std::stringstream{});}我收到这个错误:error:useofdeletedfunction‘std::basic_stringstream::basic_stringstream(conststd::basic_stringstream&)’f(std::stringstream{});^如果我将std::stringstream替换为另一种不可复制的类型,它就可以正常工作。这不应该使用stringstream的move构造函数吗?

C++ 编译器无法识别 std::stringstream::swap

我正在尝试使用g++(GCC)4.8.220131212(RedHat4.8.2-7)编译以下代码:#includeusingnamespacestd;intmain(intargc,char**argv){autox=1;stringstreams1,s2;s1.swap(s2);}我收到以下错误:g++-g-std=c++0x-cmain.cppmain.cpp:Infunction‘intmain(int,char**)’:main.cpp:8:5:error:‘std::stringstream’hasnomembernamed‘swap’s1.swap(s2);^make:*

c++ - 使用getline后如何查看剩余的stringstream字符?

std::strings;std::stringstreamss;sss现在包含"a"现在,我如何查看该行的剩余字符("b+c")?也就是说,不会导致下一个操作从下一行开始?(我知道这个例子是人为设计的。) 最佳答案 您可以像这样使用istream::seekg()恢复字符串流:ss.seekg(ss.beg);然后你可以再读一遍。这比创建一个新的要好,因为它可以节省内存,而且速度稍快。 关于c++-使用getline后如何查看剩余的stringstream字符?,我们在StackOve

c++ - stringstream 无符号转换损坏?

考虑这个程序:#include#include#include#includeintmain(){std::istringstreamstream("-1");unsignedshortn=0;stream>>n;assert(stream.fail()&&n==0);std::cout我在OSX10.5.6上的gcc(AppleInc.4.0.1版build5490)上试过这个,断言是正确的;它无法将-1转换为无符号短整型。然而,在VisualStudio2005(和2008)中,断言失败并且n的结果值与编译器生成的隐式转换所期望的相同-即“-1”是65535,“-2”是65534等